Hosting services provide a means whereby multiple users can implement custom server configurations without the overhead costs associated with purchasing, upgrading, and maintaining equipment needed to implement the configuration. Instead, a hosting service provider maintains and provisions a grid of hardware nodes that are shared amongst the multiple users. More specifically, resources of a single node can be partitioned and each of these partitions can be allocated to host a virtual server configuration of a different user.
Each hardware node in the grid includes one or more processing units (e.g., a CPU, multiple CPUs, CPUs with multiple processing cores, ASICs, graphics processing units, etc.), memory, block devices (e.g., disk storage devices), networking capabilities, and other such computing resources that often exceed the computing resources required by any single user's server configuration. By partitioning the resources of a hardware node amongst multiple server configurations, a hosting service provider minimizes the amount of hardware needed to host all such server configurations, while maximizing the usage of the available hardware.
Virtualization provides the means for partitioning the hardware resources amongst the multiple server configurations. Virtualization creates the façade that each server configuration is individually hosted on dedicated equipment with a particular set of resources. Two or more server configurations are provided non-conflicting sets of resources of the same hardware node such that a guaranteed amount of processing resources is available to each such configuration. In other words, a single physical resource is partitioned to operate as multiple logical resources.
As shown in FIG. 1, virtualization allows a single computing device 110 the ability to function as two or more different computing devices with each device having distinct sets of hardware resources and software resources. For instance, configuration 120 may be allocated 40% of the memory and 80% of the processor cycles of the device 110 and configuration 130 may be allocated the remaining 60% of the memory and 20% of the processor cycles of the device 110. Additionally, the configuration 120 may operate using a first operating system with a first set of configuration parameters and the configuration 130 may operate using a second operating system with a second set of configuration parameters.
An added benefit of virtualization is that a failure in one configuration does not disrupt the operation of the other configurations, even though all such configurations operate over physical resources of a single device. With reference to FIG. 1, should the configuration 120 crash due to an improper configuration of the operating system, the configuration 130 will continue operating unhindered as the resources used by each configuration 120 or configuration 130 operate independent of one another.
At the core of each virtualization solution is the hypervisor. The hypervisor, also referred to as the virtual machine monitor, manages a logical partitioning of a physical set of hardware resources of a physical device or node between different virtualized guests. Each virtualized guest implements one or more virtual machines over a logical partition. The hypervisor partitions underlying hardware resources such that each virtual machine is provided what logically appears as a distinct and unshared set of hardware resources. However, the hypervisor maps the virtual machine hardware calls to a corresponding subset of physical hardware resources that are actually shared by all virtual machines operating on a particular hardware node.
The hypervisor is thus responsible for mapping the hardware resources of a node to a set of virtual resources. The set of virtual resources can then be distributed independently to one or more operating systems or applications that together form the one or more virtual machines. In this manner, each virtual machine effectively is provided its own resources (e.g., a processor, memory, disk storage, networking, etc.), and the operating system of each virtual machine operates with little to no change over the provided set of resources.
Different vendors implement hypervisors differently (e.g., Xen®, Parallels®, VMware®, Kernel Virtual Machine® (“KVM”), etc.). Specifically, two prominent hypervisor types are defined as “type 1” hypervisors and “type 2” hypervisors, which are further described with reference to FIG. 2.
FIG. 2 illustrates several different platforms (both virtual and physical) on which a system configuration can operate. FIG. 2 shows a computer system 200 having a system configuration 205 and a platform 210. The system configuration 205 includes a kernel layer 235 and operating system and application layers 240. The system configuration 205 may include a set of device drivers that allow hardware devices of the platform 210 to communicate with the kernel 235, the operating system, and/or the applications of the system configuration 205.
FIG. 2 also illustrates three different types of platforms 210 in three exploded views 250a-c. The first exploded view 250a illustrates a platform 210a of a “traditional” computer system (i.e., a computer system with no hypervisors). This platform 210a includes only the physical hardware 215 of the computer system. Thus, the configuration 205 directly interfaces with the physical hardware 215 of the computer system 200.
The second exploded view 250b illustrates a platform 210b of a computer system in which a type 1 hypervisor 255 is present. The type 1 hypervisor 255 interfaces with the physical hardware of the computer, and provides a set of virtual hardware to the system configuration 205. Thus, the system configuration 205 interfaces with the virtual hardware provided by the type 1 hypervisor 255, which itself directly accesses the physical hardware 215 of the computer system 200.
The third exploded view 250c illustrates a platform 210c of a computer system in which a type 2 hypervisor 230 is present. The platform 210 includes a “host” kernel layer 220 on top of the physical hardware 215 and a “host” operating system 225 on top of the host kernel layer 220. This platform 210 also includes an application layer (not shown) on top of the operating system layer. Additionally, the platform 210 includes a type 2 hypervisor 230, which interfaces with the host operating system 225. This type 2 hypervisor 230 may be one of the applications in the application layer (not shown) on top of the host operating system 225. The type 2 hypervisor 230 is allocated a set of the physical resources 215 by the host operating system 225. Accordingly, the system configuration 205 interfaces with virtual hardware provided by the type 2 hypervisor 230, which itself receives a set of hardware resources from the host operating system 225.
The computer system shown in the exploded view 250c may be considered a “traditional” computer system (e.g., a traditional computer system as shown in the exploded view 250a) with the type 2 hypervisor 230 as one of the applications in the application layer. In other words, the computer system of this exploded view 250c may be considered a traditional computer system with system configurations “stacked” on one another.
Hosting services allow users to implement their system configurations (e.g., system configuration 205) on remote computer systems without the pitfalls associated with owning and maintaining the hardware platforms on which the system configurations run. These pitfalls include overhead costs associated with purchasing, upgrading, and/or maintaining equipment and software needed to implement the system configuration. Instead of a user burdening him or herself with these headaches, a hosting service provider maintains and provisions a grid of hardware nodes that are shared amongst multiple users. More specifically, resources of a single node can be partitioned and each of these partitions can be allocated to a virtual server configuration of a different user.
In order to host a system configuration, some hosting systems allow a user to set up the system configuration “from scratch.” In other words, the user selects one operating system from various different operating systems, and can then configure the operating system by changing parameters, installing other applications to run on top of the operating system, etc. However, users may wish to have multiple servers that are all the same without having to go through the hassle of configuring every one of the servers separately. Users may also wish to stop using a server for an extended amount of time and then bring the server back up later on without having to pay for the usage of hardware space during the downtime. Furthermore, users may wish to take a configuration of one of their virtual servers and use this configuration in another hosting system or on their own physical machine. Therefore, there is a need in the art for a method of storing a system configuration of a computer system in order to re-use the system configuration at a later time without a user being required to reconfigure a new system.